1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class GenerateGrounds : MonoBehaviour {
6
7 public GameObject groundGenerator;
8 public Transform generatePoint;
9 public float distance;
10 //private float width;
11
12 public float distanceBetweenMin;
13 public float distanceBetweenMax;
14
15 private int groundSelector;
16 private float[] groundWidth;
17 public ObjectPooler[] theObjectPools;
18
19 public Transform maxHeightPoint;
20 private float minHeight;
21 private float maxHeight;
22 public float maxHeightChange;
23 private float heightChange;
24
25 private CoinGeneratorScript coinGenerator;
26 public float randomCoins;
27
28 private CrateGeneratorScript cratesGenerator;
29 public float randomCrates;
30
31
32 void Start () {
33
34 groundWidth = new float[theObjectPools.Length];
35
36 for(int i = 0; i < theObjectPools.Length; i++) {
37 groundWidth [i] = theObjectPools [i].pooledObject.GetComponent<BoxCollider2D> ().size.x;
38 }
39
40 minHeight = transform.position.y;
41 maxHeight = maxHeightPoint.position.y;
42
43 coinGenerator = FindObjectOfType<CoinGeneratorScript> ();
44 cratesGenerator = FindObjectOfType<CrateGeneratorScript> ();
45 }
46
47
48 void Update () {
49 if(transform.position.x < generatePoint.position.x) {
50
51 distance = Random.Range (distanceBetweenMin, distanceBetweenMax);
52
53 groundSelector = Random.Range (0, theObjectPools.Length);
54
55 heightChange = transform.position.y + Random.Range (maxHeightChange, -maxHeightChange);
56
57 if (heightChange > maxHeight) {
58 heightChange = maxHeight;
59 } else if (heightChange < minHeight) {
60 heightChange = minHeight;
61 }
62
63 transform.position = new Vector3 (transform.position.x + (groundWidth[groundSelector] / 2) + distance, heightChange, transform.position.z);
64
65 GameObject newPlatform = theObjectPools[groundSelector].GetPooledObject ();
66 newPlatform.transform.position = transform.position;
67 newPlatform.transform.rotation = transform.rotation;
68 newPlatform.SetActive (true);
69
70 if(Random.Range(0f, 100f) < randomCoins) {
71 coinGenerator.spawnCoins (new Vector3 (transform.position.x, transform.position.y + 3f, transform.position.z));
72 }
73
74 if(Random.Range(0f, 100f) < randomCrates) {
75 cratesGenerator.spawnCrates (new Vector3 (transform.position.x, transform.position.y + 1.3f, transform.position.z));
76 }
77
78 transform.position = new Vector3 (transform.position.x + (groundWidth[groundSelector] / 2) + distance, transform.position.y, transform.position.z);
79
80 }
81 }
82 }